package com.jzo2o.foundations.controller.operation;

import com.jzo2o.common.model.PageResult;
import com.jzo2o.common.model.Result;
import com.jzo2o.common.model.dto.PageQueryDTO;
import com.jzo2o.foundations.model.dto.request.ServePageQueryReqDTO;
import com.jzo2o.foundations.model.dto.request.ServeUpsertReqDTO;
import com.jzo2o.foundations.model.dto.response.ServeResDTO;
import com.jzo2o.foundations.service.IServeRegionService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import nonapi.io.github.classgraph.json.Id;
import org.apache.ibatis.annotations.Update;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;
import java.util.List;

@RestController
@RequestMapping("/operation/serve")
@RequiredArgsConstructor
@Slf4j
public class ServeRegionController {
    private final IServeRegionService serveRegionService;


    /**
     * 分页查询区域服务详情
     * @param reqDTO
     * @return
     */
    @GetMapping("/page")
    public PageResult<ServeResDTO> page(ServePageQueryReqDTO reqDTO){
        return serveRegionService.pageResult(reqDTO);
    }

    /**
     * 新增区域服务项
     * @param reqDTOS
     * @return
     */
    @PostMapping("/batch")
    public void addBatch(@RequestBody List<ServeUpsertReqDTO> reqDTOS){
        serveRegionService.addServeRegion(reqDTOS);
    }

    /**
     * 删除区域内某服务项，根据服务项id
     * @param id
     */
    @DeleteMapping("/{id}")
    public void deleteById(@PathVariable String id){
        log.info("删除服务项：id为：{}",id);
        serveRegionService.deleteById(id);
    }

    /**
     * 修改价格
     * @param id
     */
    @PutMapping("/{id}")
    public void updatePriceById(@PathVariable String id,
                                @RequestParam BigDecimal price){
        log.info("修改服务项：id：{}价格为：{}",id,price);
        serveRegionService.updatePriceById(id,price);
    }

    /**
     * 上架
     * @param id
     */
    @PutMapping("/onSale/{id}")
    public void onSale(@PathVariable String id){
        log.info("上架服务项：id：{}",id);
        serveRegionService.onSale(id);
    }

    /**
     * 下架
     * @param id
     */
    @PutMapping("/offSale/{id}")
    public void offSale(@PathVariable String id){
        log.info("下架服务项：id：{}",id);
        serveRegionService.offSale(id);
    }

    /**
     * 设置热门
     * @param id
     */
    @PutMapping("/onHot/{id}")
    public void onHot(@PathVariable String id){
        log.info("设置热门服务项：id：{}",id);
        serveRegionService.onHot(id);
    }


    /**
     * 取消热门
     * @param id
     */
    @PutMapping("/offHot/{id}")
    public void offHot(@PathVariable String id){
        log.info("设置热门服务项：id：{}",id);
        serveRegionService.offHot(id);
    }


}
